Viewing digital images using a floating controller

ABSTRACT

A method and apparatus are provided for viewing one or more items using a floating controller, wherein the floating controller displays a plurality of items from a sequence of items. In one implementation, the floating controller determines that a first item and a second item from the plurality of items have an association, and displays a visual indicator to indicate that the items are associated with each other. The visual indicator may be displayed between the first and the second item. Different visual indicators may be used to indicate different types of associations. Items on the floating controller may be selected by a user to display corresponding enlarged images. The corresponding enlarged images may be displayed side-by-side to allow them to be compared.

CLAIM OF PRIORITY

This application is a continuation of application Ser. No. 12/415,831,filed on Mar. 31, 2009, which is a continuation of application Ser. No.10/960,163, filed on Oct. 6, 2004, now issued as U.S. Pat. No.7,557,818. The entire disclosures of these applications are herebyincorporated by reference as if fully set forth herein.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to co-pending application Ser. No.10/960,339, filed on Oct. 6, 2004, co-pending application Ser. No.10/960,888, filed on Oct. 6, 2004, and co-pending application Ser. No.10/960,887, filed on Oct. 6, 2004. The entire disclosures of theseapplications are hereby incorporated by reference as if fully set forthherein.

FIELD OF THE INVENTION

The present invention relates to viewing one or more digital imagesusing a floating controller.

BACKGROUND

Digital photographers may use a software system in managing andorganizing digital images. Often, digital photographers may need todisplay a large number of digital images on a display. The number ofdigital images that the digital photographer wishes to visuallyrepresent on the display may be too large or unwieldy for each of thedigital images to be visually represented on the display unobstructed.Consequently, there is a need in the art to improve the display,management, and organization of digital images shown on a display.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention are illustrated by way of example,and not by way of limitation, in the figures of the accompanyingdrawings and in which like reference numerals refer to similar elementsand in which:

FIG. 1 is an illustration of a display of a digital image systemaccording to an embodiment;

FIG. 2 is a flowchart illustrating the steps of visually depictingimages in a stack, a group, or in a set of versions according to anembodiment;

FIG. 3 is an illustration of the two states of a group containing thedigital images shown in FIG. 1 according to an embodiment;

FIG. 4 depicts a display showing a pick image containing a control tochange the state of a group according to an embodiment;

FIG. 5 is an illustration depicting a change in the pick image of astack according to an embodiment;

FIG. 6 is an illustration of two states of a stack according to anembodiment;

FIG. 7 illustrates the movement of images in a stack when an image inthe stack is promoted according to an embodiment;

FIG. 8 is an illustration of the two states of a version set accordingto an embodiment;

FIG. 9 is an illustration of a group that contains another group and astack according to an embodiment;

FIG. 10 is a flowchart illustrating the steps of using a virtual loupeaccording to an embodiment;

FIG. 11 is an illustration of a display showing a virtual loupeaccording to an embodiment of the invention;

FIG. 12 is a depiction of changing the orientation of the virtual loupeaccording to an embodiment of the invention;

FIG. 13 is an illustration of a display with a floating controlleraccording to an embodiment;

FIG. 14 is an illustration of a bounded sequence of images according toan embodiment;

FIG. 15 is a block diagram of a digital image system that may be used todisplay images on more than one display according to an embodiment;

FIG. 16 is an illustration of a display of a sequence of digital imagesarranged in a series of rows according to an embodiment;

FIG. 17 is a flowchart illustrating the steps of viewing each of a setof digital images in an unobscured manner according to an embodiment;

FIG. 18 is an illustration of a first display showing a set of imageswherein at least one of the set of images is at least partially obscuredaccording to an embodiment;

FIG. 19 is an illustration of a second display showing the set of imagesof FIG. 18 in an unobscured manner according to an embodiment; and

FIG. 20 is a block diagram that illustrates a computer system upon whichan embodiment of the invention may be implemented.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the embodiments of the invention described herein. Itwill be apparent, however, that embodiments of the invention may bepracticed without these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order to avoidunnecessarily obscuring the embodiments of the invention describedherein.

Functional Overview

A digital image system may render a floating controller on a display forpresentation to a user. The floating controller may be employed by theuser to display one or more digital images on the display. One or moreimages may be displayed on the floating controller, which, when selectedby the user, are displayed on the display. The user may transmit userinput to the digital image system to cause the floating controller to bepositioned anywhere on the display, including a position that is notadjacent to any edge of the display.

The one or more images displayed on the floating controller may includea bounded sequence of images. When an image is displayed on the floatingcontroller, by the digital image system, that is not either thebeginning or end of the bounded sequence of images, a visual indicatormay be displayed in a manner associated with the image. The visualindicator may inform the user that the image is not at either thebeginning or rend of the bounded sequence of images. In this way, a usermay scroll through the bounded sequence of images, and if not all of thebounded sequence of images may be displayed simultaneously on thefloating controller, then the user may be informed whether a particularimage is at the beginning or end of the bounded sequence of images uponmaking a visual inspection of the particular image.

The digital image system may cause the floating controller to fade fromview on the display after the passage of a configurable amount of idletime if the mouse pointer is not positioned over the floating controllerby the user. On the other hand, if the user does position the mousepointer over the floating controller, then the floating controller iscontinuously displayed on the display by the digital image system.

Search controls may also be displayed on the floating controller toenable a user to search for one or more images that conform to one ormore search terms. The user may transmit user input to the digital imagesystem via the search controls to cause a search to be performed for aset of images that correspond to a particular set of search terms. Ifthe digital image system determines that an image conforms to aparticular search term, then an image associated with the particularsearch term is displayed. If the user selects the displayed imageassociated with the particular search term, then all images that matchthe particular search term are displayed by the digital image system.

Ratings controls may also be displayed on the floating controller toenable a user to associate a rating value with one or more images. Theuser may transmit user input to the digital image system via the ratingscontrols to associate a ratings value with one or more images. The usermay also transmit user input to the digital image system via the ratingscontrols to cause one or more images that conform to a set of ratingsvalues to be displayed on the display.

Groups, Stacks, and Versions

A user, such as a photographer, may manage and organize a collection ofdigital images using a digital image system that displays digital imagesusing groups, stacks, and version sets according to one embodiment ofthe invention. FIG. 1 is an illustration of a display 100 and storage110 of several digital images by a digital image system, according toone embodiment of the invention. As explained in further detail below, adigital image system may include a computer system that displays one ormore digital images upon a display, e.g., display 100 of FIG. 1. As FIG.1 shows, four different digital images, namely image A, image B, imageC, and image D, are visually depicted on display 100. While only fourdigital images are shown for ease of explanation, display 100 may easilydisplay an unwieldy number of digital images, e.g., two-thousand ormore, thus creating difficulties for a user to view and manage all ofthe digital images shown on display 100.

The images displayed on display 100 are stored in storage 110. Storage110 may be implemented using any mechanism for storing digital images,e.g., a database, file server, or volatile memory. A digital imagestored in storage 110 has a file image resolution, which is theresolution of the digital image when it is stored. Digital images may bedisplayed at a different level of resolution than that of the file imageresolution, e.g., a particular image may be shown magnified resolutionlevel. The level of resolution of a displayed image shall be referred toas the displayed image resolution.

To assist the user in the management and organization of his or herdigital images, one or more digital images may be arranged into a group,a stack, or as a version set. FIG. 2 is a flowchart illustrating thesteps of visually depicting images in a stack, a group, or as a versionset, according to one embodiment of the invention. In step 210, set datais stored that (a) identifies an association between a plurality ofimages, (b) identifies a representative image, and (c) identifies acurrent state of the plurality of images. When one or more digitalimages are arranged into a group, a stack, or as a version set, set datais generated and stored that identifies the one or more digital imagesand whether the one or more digital images are arranged into a group, astack, as a version set, or any combination thereof (as explained below,groups and stacks may be nested). The performance of the remainder ofsteps of FIG. 2 with respect to groups, stacks, and version sets shallbe described in further detail below.

Groups

As used herein, a group is a set of unordered digital images that may bevisually represented, in a first state, using a representative image,referred to as a “pick image.” A group may also be visually represented,in a second state, by displaying all digital images in the group, ratherthan just the pick image. The pick image of the group, which isdisplayed on a display, may be used to represent each digital image ofthe group, thereby reducing the number of digital images displayed onthe display.

FIG. 3 is an illustration of two states of a group containing thedigital images shown in FIG. 1 according to one embodiment of theinvention. As FIG. 3 shows, in a contracted state of the group, only thepick image is displayed, while in an expanded state of the group, eachdigital image in the group, including the pick image, is displayed. Whena group is in the expanded state, the pick image may be displayed in aparticular position indicative of the pick image, e.g., the pick imageof the group depicted in the expanded state is displayed as the firstdigital image of the group.

The digital image system may depict images of a group based on metadatastored with the group in storage 110. The metadata stored in storage 110identifies the group, each image in the group, which image of the groupis the representative image (or pick image), and the state of the group.For example, metadata 120, associated with the group in the contractedstate, stores data that (a) identifies the group, (b) identifies imageA, image B, image C, image D as belonging to the group, (c) identifiesthe current state as the contracted state, and (d) identifies image A asthe pick image. Metadata 122, associated with the group in the expandedstate, stores data that (a) identifies the group, (b) identifies imageA, image B, image C, image D as belonging to the group, (c) identifiesthe current state as the expanded state, and (d) identifies image A asthe pick image. The digital image system displays images of the groupbased on the stored metadata associated with the group, e.g., asmetadata 120 indicates the group associated with it is in the contractedstate, digital image system displays only image A (which is the pickimage) on display 100.

In step 220 of FIG. 2, when the current state of the group is acontracted state, the images of the group are visually depicted bydisplaying only the representative image, or the pick image. Forexample, as shown by the group in the contracted state depicted in FIG.3, image A, image B, image C, and image D are represented by visuallydepicting only image A. In step 230 of FIG. 2, when the current state ofthe group is the expanded state, the images of the group are visuallydepicted by displaying two or more images of the plurality of images.For example, as shown by the group in the expanded state depicted inFIG. 3, image A, image B, image C, and image D are represented byvisually depicting image A, image B, image C, and image D. Note that instep 230, the images of the group may be visually depicted by displayingless than all of images of the group, as long as two or more images ofthe group are visually depicted, e.g., in step 230, image A, image B,image C, and image D may be visually depicted by showing only image Aand image D.

Changing the Display State of a Group

A user may change the state of the group between the contract state andthe expanded state. In one embodiment of the invention, the state of thegroup may be changed by the user submitting input to a computer system.Input may be submitted to a computer system by a variety of means,includes one or more sequences of keystrokes or one or more mouseclicks. In a particular embodiment of the invention, the state of thegroup may be changed by the user selecting a control associated with thegroup. FIG. 4 depicts a display 400 showing a pick image containing acontrol 410 to change the state of a group according to one embodimentof the invention. The group of FIG. 4 may be changed from the contractstate to the expanded state by the user selecting the control 410displayed on the pick image of FIG. 4. Control 410 may be implementedusing any graphical component that allows a user to select the control,e.g., by clicking on it. Note that the control 410 need not be displayedon the pick image, but rather, may be displayed anywhere on a screenvisible to a user, e.g., control 410 may be displayed on a toolbar.Accordingly, control 410 may be implemented using any mechanism forreceiving user input, such as one or more sequences of keystrokes or oneor more mouse clicks.

When the state of a group is changed, the number of digital images thatare visually represented on the display is changed (i.e., either thepick image is shown or two or more digital images of the group areshown). The process of changing the number of digital images that arevisually represented on the display may be performed in a manner thatallows the user to visualize what is happening to the group. One way toaccomplish this is to provide an animation showing the change in thenumber of digital images visually depicted by the group to allow theuser to understand that the state of the group has changed. In otherwords, in order to avoid confusing a viewer by changing the visualdepiction of the group instantaneously when the state of the group ischanged, the change in the visually depiction of the group may occurover a noticeable period of time to allow the user to fully comprehendthe change in state of the group by watching the change on the display.For example, one or more intermediate states of the group may bedisplayed as the group transitions from the visual depiction ofcontracted state to the visual depiction of the expanded state.

Changing the Pick Image of a Group

The user may change the pick image of the group. User input to changethe pick image of a group may be submitted via a variety of mechanisms,including input device 2014 and cursor control 2016. When a group isdisplayed in the expanded state, the pick image of the group may bedisplayed in such a way as to allow the viewer to visually determinewhich image of the group is the pick image. For example, the pick imageof a group in the expanded state may be displayed with a visualindicator, such as a border, shading, or highlighting, to indicate tothe viewer that which image of the group is the pick image.

When a new image for a group in the expanded state is identified by theuser as a new pick image, the new image may be displayed with a visualindicator to indicate that the new image is now the pick image, and theprior pick image may cease to be displayed with the visual indicator. Itis not necessary for any of the images of a group in the expanded stateto move on the display when a new pick image for the group is selectedby the user, i.e., the new pick image may be displayed with the visualindicator without moving the new pick image. The change in the pickimage of the group in the expanded state may be performed in a mannerthat allows the user to visualize what is happening to the group.

Stacks

Stacks may also be used to manage and organize digital images. A stack,as used herein, is a set of ordered digital images. Similar to groups,stacks may be visually represented, in a contracted state, using arepresentative image (or pick image), and in an expanded state in whichall digital images associated of the stack are displayed. FIG. 6 is anillustration of two states of a stack according to one embodiment of theinvention. Each digital image in a stack has a rank, and each digitalimage in the stack is depicted in order of its rank. For example, in thestack in the expanded state as shown in FIG. 6, pick image A has thehighest rank, image B has the next highest rank, image C has the nexthighest rank, and so on.

The digital image system may depict images of a stack based on metadatastored with the stack in storage 610. The metadata stored in storage 610identifies the stack, each image in the stack, which image of the stackis the representative image (or pick image), the rank of each image inthe stack, and the state of the stack. For example, metadata 620,associated with the stack in the contracted state, stores data that (a)identifies the stack, (b) identifies image A, image B, image C, image Das belonging to the stack, (c) identifies the current state of the stackas the contracted state, (d) identifies a rank associated with eachimage of the stack, and (e) identifies image A as the pick image.Metadata 122, associated with the stack in the expanded state, storesdata that (a) identifies the stack, (b) identifies image A, image B,image C, image D as belonging to the stack, (c) identifies the currentstate of the stack as the expanded state, (d) identifies a rankassociated with each image of the stack, and (e) identifies image A asthe pick image. The digital image system displays images of the stackbased on the stored metadata associated with the stack, e.g., asmetadata 620 indicates the stack associated with it is in the contractedstate, digital image system displays only image A (which is the pickimage) on display 600.

Returning again to FIG. 2, in step 220, when the current state of astack is the contracted state, the images of the stack are visuallydepicted by displaying only the representative image, or the pick image.For example, as shown by the state in the contracted state depicted inFIG. 6, image A, image B, image C, and image D are represented byvisually depicting only image A.

In step 230 of FIG. 2, when the current state of the stack is theexpanded state, the images of the stack are visually depicted bydisplaying two or more images of the stack in order of the rankassociated with each displayed image. For example, as shown by theimages in the stack in the expanded state depicted in FIG. 6, image A,image B, image C, and image D are represented by visually depictingimage A, image B, image C, and image D. Note that in step 230, theimages of the stack may be visually depicted by displaying less than allof images of the stack, as long as two or more images of the stack arevisually depicted, e.g., in step 230, image A, image B, image C, andimage D may be visually depicted by showing only image A and image B.When the stack is in the expanded state, images are shown in order ofthe rank associated with each displayed image. For example, in the stackin the expanded state depicted in FIG. 6, image A (which is first) hasthe highest rank, image B (which is displayed next) has the next highestrank, and so on.

In one embodiment of the invention, the state of the stack may bechanged by the user selecting a control associated with the stack, e.g.,a control similar to control 410 of FIG. 4. In another embodiment of theinvention, the state of the group may be changed by the user submittinginput to a computer system. Input may be submitted to a computer systemby a variety of means, includes one or more sequences of keystrokes orone or more mouse clicks.

Promoting Images in a Stack

Digital images in the stack may be promoted to a higher rank or demotedto a lower rank. A user may use a stack to decide which digital image ina set of related digital images is his or her favorite by promotingfavored digital images in the stack, and demoting unfavored digitalimages in the stack. A user may cause a particular image in the stack tobe promoted or demoted by selecting a control on the particular image,similar to control 410 of FIG. 4.

When an image in a stack is promoted or demoted, the visual display ofthe stack may be updated in a manner that allows the user to visualizethe change in the order of images in the stack. FIG. 7 is anillustration 700 of the movement of images in a stack when an image inthe stack is promoted according to one embodiment of the invention. Asshown in FIG. 7, image C is promoted, thereby causing it to have ahigher rank than image B. Consequently, image C is shown to move fromits current location to the location formerly held by image B by passingthrough one or more intermediate locations, such as temporary position1. Image B may also be shown to move from its current location to thelocation currently occupied by image C by passing through one or moreintermediate locations, such as temporary position 2. In this way, theuser may fully comprehend the change in the order of images in the stackby watching the movement of the members of the stack. When an image inthe stack is promoted or demoted, the metadata associated with the stackis updated to reflect the changing in ranking of each image of thestack.

Changing the Pick Image of a Stack

The user may change the pick image of a stack. FIG. 5 is an illustration500 depicting a change in the pick image of a stack according to oneembodiment of the invention. FIG. 5 shows the result of receiving userinput to cause image C to be the pick image of the stack. The pick imageis displayed in position 510, which is currently occupied by image A.User input may be submitted via a variety of mechanisms, including inputdevice 2014 and cursor control 2016. When a new pick image of a stack isidentified by the user, the new pick image is promoted to the firstposition of the stack, and other images in the stack remain in theirsame relative order. The change in the pick image may be performed in amanner that allows the user to visualize what is happening to the group.

For example, as FIG. 5 illustrates, image C may be shown to move fromits current location to position 510 by passing through one or moreintermediate locations, such as temporary position 1 and temporaryposition 2. After image C is promoted to position 510, images A, B, andD remain in the same relative order with respect to each other. Thus,images A and B may be shifted a position to the right on the display tovisually represent their change in relative position within the stack.Image A may be shown to move from its current location to the locationoccupied by image B by passing through one or more intermediatelocations. Image B may be shown to move from its current location to thelocation previously occupied by image C by passing through one or moreintermediate locations. In this way, the user may fully comprehend thechange in the pick image of the group by watching the movement of thedigital images of the group on the display.

Versions

According to one embodiment, two or more digital images may beestablished as a version set. A version set refers to a set of relateddigital images that may be visually represented, in a first state, usinga representative image (or pick image), and in a second state by eachdigital image associated of the set. Version sets are similar to groups,except that the images in the version set are derived, directly orindirectly, from the same original digital image. For example, a usermay wish to modify an original image to create a derived image.According to one embodiment, each derived image automatically becomes amember of the version set of the image from which it is derived. Forexample, if a user created a black and white copy of an original imagethat is in color, the black and white copy and the original image areautomatically associated in a version set. Thus, a version set includesthe original image and any derived images created from the originalimage.

FIG. 8 is an illustration of two states of a set of versions accordingto one embodiment of the invention. As shown in FIG. 8, image A is theoriginal version, and image B, image C, and image D where each derivedfrom image A. As FIG. 8 shows, the contracted state of the version setonly displays the pick image (image A), while the expanded state of theversion set displays each digital image in the version set, includingthe pick image. When a set of versions is in the second state, the pickimage may be displayed in a particular position, e.g., the pick imagemay be displayed as the first digital image of the group. For example,as shown in FIG. 8, image A is the pick image, and the pick image is thefirst digital image displayed in the group. The images of version set inthe expanded state may be listed in chronological order, e.g., the usermay have created image A most recently, next to image B, and so on.

Returning again to FIG. 2, in step 220, when the current state of theset of versions is in the first state, the images of the version set arevisually depicted by displaying only the representative image, or thepick image. For example, as shown by the contracted state depicted inFIG. 8, image A, image B, image C, and image D are represented byvisually depicting only image A. In step 230 of FIG. 2, when the currentstate of the version set is in the expanded state, the images of theversion set are visually depicted by displaying two or more images ofthe version set.

For example, as shown by the version set in the expanded state depictedin FIG. 8, image A, image B, image C, and image D are represented byvisually depicting image A, image B, image C, and image D. Note that instep 230, the images of the version set may be visually depicted bydisplaying less than all of the images of the version set, as long astwo or more images of the version set are visually depicted, e.g., instep 230, image A, image B, image C, and image D may be visuallydepicted by showing only image A and image B. The state of the versionset may be changed by the user selecting a control associated with theversion set, e.g., a control similar to control 410 of FIG. 4.

The digital image system may depict images of a version set based onmetadata stored with the version set in storage 810. The metadata storedin storage 810 identifies the version set, each image in the versionset, which image of the version set is the representative image (or pickimage), and the state of the version set. For example, metadata 820,associated with the version set in the contracted state, stores datathat (a) identifies the version set, (b) identifies image A, image B,image C, image D as belonging to the version set, (c) identifies thecurrent state of the version set as the contracted state, and (d)identifies image A as the pick image. Metadata 822, associated with theversion set in the expanded state, stores data that (a) identifies theversion set, (b) identifies image A, image B, image C, image D asbelonging to the version set, (c) identifies the current state of theversion set as the expanded state, and (d) identifies image A as thepick image. The digital image system displays images of the version setbased on the stored metadata associated with the version set, e.g., asmetadata 820 indicates the version set associated with it is in thecontracted state, digital image system displays only image A (which isthe pick image) on display 800.

According to one embodiment of the invention, the amount of data neededto represent an image (a derived image) that is derived from anotherimage (the original image) may be minimized if the derived image wascreated using an internal application. An internal application is anyapplication that makes available data that identifies one or morechanges made to the original image to create the derived image. If aderived image was created by an external application (which is anyapplication that is not an internal application), then data is storedthat identifies the particular image. Since the derived image wascreated by an external application, data that identifies one or morechanges made to the original image to create the derived image is notavailable; consequently the entire derived image is stored. However, ifthe particular image was created by an internal application, then datais stored that identifies one or more changes made to an original imageto create the derived image. In this case, the derived image may becreated as needed by applying the data that identifies one or morechanges made to the original image. A set of versions may include afirst portion of images that were created by an external application,and a second portion of images there were created by an internalapplication.

Drag and Drop Operations

A drag and drop operation produces different results depending onwhether the entity involved is a stack, group, or a version set. Upon auser initiating a drag and drop operation on a stack from a firstlocation of a display to a second location of a display, the digitalimage system records data in a storage device that identifies a copy ofthe pick image of the stack in the second location. Upon a userinitiating a drag and drop operation on a group from a first location ofa display to a second location of a display, the digital image systemrecords data in a storage device that identifies a copy of each image ofthe group in the second location. Upon a user initiating a drag and dropoperation on a version set from a first location of a display to asecond location of a display, the digital image system records data in astorage device that identifies a copy of the pick image of the versionset in the second location.

An operation, initiated by the user, that affects the visual display ofan image, is performed differently depending on whether the userinitiates the operation on a stack, group, or a version set. For anoperation specified by the user to be performed on a stack, the digitalimage system performs the operation on the pick image of the stack. Foran operation specified by the user to be performed on a group, thedigital image system performs the operation on all the images of thegroup. For an operation specified by the user to be performed on aversion set, the digital image system performs the operation on the pickimage of the version set.

Nested Containers

Stacks, groups, and version sets may be a nested. A group may includemembers which are themselves stacks, groups, and/or version sets. Astack may include members which are themselves stacks and/or versionsets. FIG. 9 is an illustration 900 of a group that contains anothergroup and a stack according to one embodiment of the invention. A shownin FIG. 9, group 910 contains image A, image B, group A, and stack A.Group A may itself contain one or more stacks, groups, and/or versionsets. Stack A may also contain one or more stacks, groups, and/orversion sets.

The digital image system visually depicts the nested group of FIG. 9based on metadata 922 stored with the nested group in storage 910. Themetadata 922 identifies the stack, each image, group, stack, or versionset in the stack, which image, group, stack, or version set of the stackis the representative image (or pick image), and the state of the group.If group 910 was instead a stack, metadata 922 would also identify therank of each image, group, stack, or version set in the stack. Thedigital image system displays images of the stack based on the storedmetadata associated with the nested entity. Each group, stack, orversion set within a group or set may be expanded or contracted. Whenthe pick image of a group or stack (the parent) is itself a group,stack, or version set (the child), then the pick image of the child isused by the digital image system as the pick image of the parent whenthe parent is in the contracted state.

Nested stacks and groups may be advantageous when managing multiplerelated images. For example, some digital cameras may take multiplepictures each time a user presses the shutter of the digital camera,e.g., to capture a high-speed action shot. It would be advantageous toassociate each set of images taken by the camera each time the usertakes a picture in a single group or stack. This way, the user may laterreview the images in the group or stack with greater ease, as it islikely the user may only wish to ultimately use one digital image in thegroup or stack.

A set of images may be automatically assigned to a group, stack, orversion set by the digital image system based on information associatedwith the set of images. When a set of images is assigned to group,stack, or version set, metadata that identifies the set of images andthe entity (group, stack, or a version set) to which the set of imagesare assigned is stored in a storage device. Such metadata may begenerated automatically during various activities, such as exposurebracketing and sequencing. Exposure bracketing involves taking multiplepictures of similar subject matter at different times using differentexposures. Sequencing involves taking multiple picturescontemporaneously in time.

If a set of images were each taken contemporaneously in time, each ofthe set of images may be assigned to the same group by the digital imagesystem using the generated metadata. In another example, if a set ofimages of similar subject matter were taken using different exposures,each of the set of images may be assigned to the same group by thedigital image system using the generated metadata. In yet anotherexample, if a derived image is created from an original image, then theoriginal image and the derived image may be assigned to the same versionset by the digital image system. Thus, a digital image system may assigna set of images to a group, stack, or version set based on thecharacteristics of the set of images as described in the metadata. Thedigital image system of other embodiments of the invention may beconfigured to assign a set of images to either a group, stack, orversion set based on additional characteristics of the set of imagesdescribed in the metadata not presented above in an example, as anycharacteristic of the set of images described in the metadata maydetermine whether the set of images is assigned to a group, stack, orversion set.

Use of the Virtual Loupe

The digital image system of one embodiment of the invention may be usedto view a digital image shown on a display using a virtual loupe. Thelens region of the virtual loupe may automatically change in orientationwith respect to the target region on the display, as the user causes thetarget region to change locations on the display, to ensure that thedisplay of the lens region is always unobscured on the display.

FIG. 11 is an illustration of a display 1100 showing a virtual loupeaccording to one embodiment of the invention. FIG. 11 shows a display1100 that visually represents a digital image 1110. The virtual loupecomprises a target region 1120 and a lens region 1130. Visualinformation identified by target region 1120 is displayed within thelens region 1130. Target region 1120 may identify visual information bypointing to the visual information or by enclosing the visualinformation within the target region 1120.

The virtual loupe of FIG. 11 includes line 1122 and line 1124. Line 1122and line 1124 may either be opaque, transparent, or alpha-blended. Thearea bounded by line 1122, lens region 1130, line 1124, and targetregion 1120 may either be opaque, transparent, or alpha-blended. In aparticular embodiment, line 1122 and line 1124 may be transparent, andthe area bounded by line 1122, lens region 1130, line 1124, and targetregion 1120 may be transparent, to advantageously allow a photographerto view visual information, identified by target area 1120, in lensregion 1130 in a manner that minimizes the amount that the display 1100is obscured.

FIG. 10 is a flowchart illustrating the steps of using a virtual loupeaccording to one embodiment of the invention. In step 1010 of FIG. 10,within a first bounded region on a display, a different visual depictionof visual information enclosed within a second bounded region on thedisplay is displayed. The first bounded region and the second boundedregion are enclosed within a third bounded region. The first boundedregion corresponds to the lens region 1130, the second bounded regioncorresponds to the target region 1120, and the third bounded regioncorresponds to the display 1100.

Target region 1120 and lens region 1130 may both be of any shape andsize, including circular. In one embodiment of the invention, targetregion 1120 and lens region 1130 are the same shape. In anotherembodiment of the invention, target region 1120 and lens region 1130 area different shape. Target region 1120 and lens region 1130 may each haveeither an opaque border, transparent border, or an alpha-blended border.An object that is alpha-blended, as used herein, is displayed such thatis partially transparent.

In one embodiment of the invention, target region 1120 may beimplemented such that target region 1120 outlines the area to be viewedin lens region 1130 without obscuring the area, such as a circle with anopaque border and a transparent center. In another embodiment, targetregion 1120 is implemented using a movable visual indicator (such as anarrow or a crosshair). The visual information identified by targetregion 1120 would, at least in part, be obscured by the movable visualindicator, unless the movable visual indicator is alpha-blended. Thus,in such an embodiment, it is advantageous to make the movable visualindicator partially transparent through the use of alpha-blending.

The display image resolution of visual information of an image presentedin the lens region 1130 may be different than the file image resolutionfor that image. In one example, the display image resolution of an imagemay be a magnified relative to the file image resolution for that image.In another example, image 1100 may be generated based on a stored image,the image 1100 may be shown on display 1100 at a lower resolution orhigher resolution than the file image resolution for image 1100, and thelens region 1130 may depict visual information at the same resolution asthe file image resolution for image 1100. In this example, the user mayview visual information in lens region 1130 that corresponds to theexact resolution of image 1130. In another example, lens region 1130 maydepict visual information at a higher-resolution that the file imageresolution for image 1100.

The user may configure the virtual loupe to display visual informationat different levels of resolution. For example, the user may configurethe virtual loupe to display visual information from a higher or lowerresolution as image 1110 to depicting visual information at the sameresolution as image 1110. In another example, the user may configure thevirtual loupe to display visual information from the same resolution asimage 1110 to depicting visual information at a higher or lowerresolution as image 1110.

When a user moves target region 1120 from a first region that isdisplayed at a first resolution to a second region that is displayed ata different resolution than the first region, the size of the targetregion 1120 changes without changing the level of magnification ofvisual information displayed in the lens region 1130. As target region1120 identifies a portion of an image of which visual informationassociated with that portion is displayed in lens region 1130, if theamount of visual information that the lens region 1130 can depictchanges (for example, target region 1120 moves over an area of lowerresolution than of a prior area), then the size of target region 1120will change (as visual information enclosed by target region 1120 isdepicted in lens region 1130) to identify the new area of visualinformation that may be depicted by lens 1130.

Alternately, the target region 1120 may remain fixed in size, and thelens region 1130 may change in size to account for a change in theamount of visual information that may be depicted by lens region 1130.For example, if target region 1120 moves over an area of lowerresolution than of a prior area, then the size of target region 1120remains fixed, but lens region 1130 will shrink in size to account forthe decreased amount of visual information to depict. Thus, when targetregion 1120 is moved to identify a portion of visual information at adifferent level of resolution than previously identified, either targetregion 1120 or lens region 1130 may change in size to account for thechange in the amount of visual information that may be depicted by lensregion 1130.

Automated Orientation Adjustment

In step 1020 of FIG. 10, when a user moves target region 1120 withindisplay 1100, the orientation of the lens region 1130 may be changedrelative to the target region 1120. Step 1020 is performed to ensurethat lens region 1130 is always displayed on display 1100.

FIG. 12 is a depiction of changing the orientation of the virtual loupeon a display 1200 according to one embodiment of the invention. As FIG.12 depicts, in response to the user moving the location of target region1120, the digital image system causes the lens region 1130 to move fromposition 1140 to position 1142. The user may move the location of targetregion 1120 by submitting user input to digital image system by avariety of mechanisms, e.g., input device 2014 and cursor control 2016.

The digital image system maintains data that describes the location oftarget region 1120 and lens region 1130. The user may cause the targetregion 1120 to move over the display 1100 by submitting user input tothe digital image system using input device 2014 and/or pointer control2016. The lens region 1130 moves in accordance with the target region1120, e.g., if the target region 1120 is moved on the display two inchesto the left, then the lens region 1130 is moved on the display twoinches to the left. When the digital image system detects that the userhas submitted user input that includes instructions to change thelocation of target region 1120, digital image system (a) updates thedata that describes the location of target region 1120 to reflect thelocation identified by the user input, and (b) updates the display ofthe target region 1120 to reflect the new location. Similarly, when thelens region 1130 is moved by the digital image system, the digital imagesystem (a) updates data that describes the location of lens region 1130on display 1200, and (b) updates the display 1200 to reflect the newlocation of lens region 1130.

In embodiments of the invention, the digital image system ensures thatthe lens region 1130 is always viewable on the display, regardless ofwhere the target region 1120 is positioned on the display. When thedigital image system detects that the target region 1120 is approachingthe edge of display 1100, the digital image system determines if thelens region 1130 is closer to the edge of the display 1100 than thetarget region 1120. If the lens region 1130 is closer to the edge of thedisplay 1100 than the target region 1120, then the digital image system(a) changes the orientation on the display between the target region1120 and the lens region 1130 so that the target region 1120 is closerto the edge of the display 1100 than the lens region 1130, and (b)updates the data that describes the location of lens region 1130 toreflect the new position of the lens region 1130. While the orientationof lens region 1130 is changing, the lens region 1130 continues todepict the same visual information of image 1110. By changing theorientation of the lens region 1130 with respect to the target region1120, the digital image system ensures that the lens region 1130 isalways viewable on the display.

In one embodiment, the digital image system determines what the newposition of the lens region should be by (a) maintaining a constantdistance between the lens region 1130 and the target region 1120, and(b) changing the orientation of the lens region 1130 with respect to thetarget region 1120 to be aligned with the center of display 1200, e.g.,lens region 1130 is moved from position 1140 to position 1142 as shownin FIG. 12.

In another embodiment, the digital image system determines what the newposition of the lens region should be using a plurality of subregions.The digital image system maintains data that divides the display 1200into a plurality of subregions, e.g., the digital image system maymaintain data that divides display 1200 into four subregions as shown inFIG. 12. The division of each subregion need not be visually presentedto the user. Step 1020 is performed by digital image system bydetermining the orientation between the target region 1120 and the lensregion 1130 based on which subregion of display 1100 in which the targetregion 1120 is located. When digital image system changes theorientation between the target region 1120 and the lens region 1130, thedigital image system maintains the same distance between the targetregion 1120 and the lens region 1130.

When the digital image system determines that the lens region 1130should change orientation, the digital image system changes theorientation of the lens region 1130 to be pointed in a particulardirection associated with the subregion in which the lens region islocated. For example, anytime a lens region 1130 changes orientation insubregion 1, the digital image system may change the orientation of lensregion 1130 such that the lens region 1130 is more or less south-east oftarget region 1120. As shown in FIG. 12, as lens region 1130 is insubregion 1, when lens region 1130 changes orientation, lens region 1130is rotated such that lens region 1130 is more or less south-east oftarget region 1120 to ensure that the lens region 1130 is fully depictedon display 1200.

In another example, anytime a lens region 1130 changes orientation insubregion 2, the digital image system may change the orientation of lensregion 1130 such that the lens region 1130 is more or less north-east oftarget region 1120. In another example, anytime a lens region 1130changes orientation in subregion 3, the digital image system may changethe orientation of lens region 1130 such that the lens region 1130 ismore or less south-west of target region 1120. In another example,anytime a lens region 1130 changes orientation in subregion 4, thedigital image system may change the orientation of lens region 1130 suchthat the lens region 1130 is more or less north-west of target region1120. Advantageously, embodiments of the invention provide for rotatingthe orientation of the lens region 1130 with respect to the targetregion 1120 to ensure that the lens region 1130 is fully depicted ondisplay 1100. Thus, anytime lens region 1130 may be obscured on display1100, such as when lens region 1130 is partially obscured by a border ofdisplay 1100, lens region 1130 may change orientation with respect totarget region 1120 to ensure that the lens region 1130 is fully depictedon display 1100.

Other embodiments of the invention may employ different methods thanthose described above for determining where lens region 1130 should berotated to with respect to target region 1120.

Step 1020 may be performed by depicting, over a period of time, movementof the lens region 1130 from a first position (position 1140) to asecond position (position 1142) through one or more intermediatelocations. Thus, the user is able to visually ascertain that the lens isbeing rotated to provide an unobscured view of lens region 1130, whichprevents disorientation to the user from sudden movement of images ondisplay 1200.

The lens region 1130 may display any visual information identified bytarget region 1120, and target region 1120 may be positioned anywhere ona display. For example, target region 1120 may be positioned over afloating controller (described in further detail below) to cause lensregion 1130 to display visual information for an image displayed on thefloating controller.

Target region 1120 may be positioned over any visual informationdisplayed on a display. For example, target region 1120 may bepositioned over a thumbnail image displayed on a display or over athumbnail image displayed on a toolbar, such as a floating control 1310,described below. When target region 1120 identifies visual informationassociated with a thumbnail image, lens region 1130 displays visualinformation about the thumbnail image. For example, a photographer mayposition the target region 1120 over a thumbnail image displayed on adisplay. Thereafter the photographer may inspect visual information ofthe thumbnail image at the file image resolution by looking into thelens region 1130. In this way, the photographer can view the digitalimage of the thumbnail image at the exact resolution in which thedigital image is stored, even though the thumbnail image is displayed ata lower level of resolution that the file image resolution.

Displaying Images Using a Floating Controller

The digital image system of one embodiment of the invention may be usedto display one or more digital images using a floating controller. FIG.13 is an illustration of a display 1300 with a floating controller 1310according to one embodiment of the invention. Digital image system maystore data that describes how to render floating controller 1310 ondisplay 1300. A user may select one or more images displayed on floatingcontroller 1310 for display on display 1300. For example, floatingcontroller 1310 may operate in a compare mode wherein two images (image1322 and image 1324) are displayed on display 1300 side by side tofacilitate comparison, as shown in FIG. 13. When floating controller1310 is operating in compare mode, one image of the two displayed imagesremains fixed (for example, image 1324), while the user may submit userinput to the digital image system to cause the digital image system tochange the display of the other image (for example, image 1322) to adifferent image. In this way, the user may compare image 1324 against avariety of images displayed in the position occupied by image 1322.

Floating controller 1310 may also operate in a stack mode. Stack mode issimilar to compare mode, (two images are shown on a display, wherein oneof the images in a first position may be compared to multiple imagesshown, one at a time, in a second position) except that the image thatdoes not move is the pick image of a group, stack, or version set, andthe other images being compared belong to the same group, stack, orversion set. Stack mode may be used to select a new pick image of agroup, stack, or version set.

If not all the images that floating controller 1310 can display areshown on floating controller 1310, then the user may submit user inputto digital image system via controls which are on floating controller1310 to cause the digital image system to scroll through the images sothat the user may view all images that floating controller 1310 candisplay.

Floating controller 1310 need not have any boundary that is adjacent toany boundary of display 1300. For example, A user may cause floatingcontroller 1310 to be displayed anywhere on display 1300, including aposition wherein floating controller 1310 is not adjacent to anyboundary of display 1300, but rather is displayed on display 1300without being adjacent or associated with any boundary of any screen,window, or application. Floating controller 1310 may also be positionedover one or more images on display 1300. For example, floatingcontroller 1310 may wholly or partially obscure one or more of image1322 and image 1324.

The user may position floating controller 1310 anywhere on display 1300,including a different orientation (such as horizontally or vertically).A user may cause floating controller 1310 to be displayed vertically ondisplay 1300, rather than horizontally as shown in FIG. 13. Floatingcontroller 1310 may be rotated by the user from either a verticalorientation to a horizontal orientation, or a horizontal orientation toa vertical orientation. In one embodiment of the invention, if thefloating controller 1310 is dragged near the boundary of display 1300,then the orientation of floating controller 1310 may automatically beadjusted to correspond the orientation of the boundary of display 1300.For example, if floating controller 1310 is currently displayedvertically, and the user drags floating controller 1310 within aconfigurable distance of a horizontal boundary of display 1300, thenfloating controller 1310 may automatically be displayed horizontally ondisplay 1300. The size of floating controller 1310 may also beconfigured by the user.

When the digital image system receives user input that specifies thatthe size, shape, orientation, or location of floating controller 1310 isto be changed, the digital image system (a) updates data that describesthe size, shape, orientation, and location of floating controller 1310to reflect the user input, and (b) updates the display 1300 to reflectthe new size, shape, orientation, or location of floating controller1310 as indicated in the received user input.

Displaying and Hiding the Display of the Floating Controller

In one embodiment of the invention, floating controller 1310 iscontinually displayed as long as a pointer, controlled by a user inputdevice, displayed on display 1300 is located over floating controller1310. The user may move the display of the pointer on display 1300 usinginput device 2014 or cursor control 2016. Digital image system storesand updates data that describes the current location of the pointer onthe display 1300.

When the pointer is moved off the floating controller 1310, idle periodsare tracked. An idle period is a period of time during which no userinput of any type is received, e.g., no input is received via inputdevice 2014 or cursor control 2016. If, while the pointer is off thefloating controller 1310, the idle period exceeds a predeterminedthreshold duration, the floating controller 1310 is hidden (the floatingcontroller 1310 is no longer displayed on display 1300). Thepredetermined threshold duration may be configured by the user usingcontrols displayed on floating controller 1310. If floating controller1310 is hidden during an idle period, then floating controller 1310 isredisplayed on display 1300 in response to the end of the idle period.

Displaying Images in a Group, Stack, or Version Set on a FloatingController

Images in a sequence may be displayed on floating controller 1310. Ifone image has an association with another image, e.g., both imagesbelong to a stack, a group, or a version set, then digital image systemmay display a visual indicator on display 1300 to identify theassociation to the user. For example, digital image system displays avisual indicator 1340 between image 1320, image 1322, and image 1324, aswell as a visual indicator 1340 between image 1326, image 1328, andimage 1330. In another embodiment (not depicted), a different visualindicator may be used for a group, a stack, or a version set to allowthe user to identify the particular association (whether the associationis a group, a stack, or a version set) between a set of images that eachhave a visual indicator.

A user may select on image of the sequence of images displayed onfloating controller 1310. In one embodiment, when a user selects a newimage of the sequence of images displayed on floating controller 1310,the digital image system may center the display of the sequence ofimages on the selected image on floating controller 1310. In anotherembodiment, when a user selects a new image of the sequence of imagesdisplayed on floating controller 1310, the digital image system maycenter the sequence of on the group, stack, or version set associatedwith the selected image. In another embodiment, the digital image systemdoes not center the display of the sequence of images on the selectedimage when the user selects the selected image if the selected image isin the same group, stack, or version set as the formerly selected image.For example, if image 1322 was selected, and thereafter the user causedimage 1324 to be selected, then the digital image system would notcenter the display of the sequence of images on image 1324. On the otherhand, if image 1324 is selected, and thereafter the user caused image1326 to be selected, then the digital image system causes the display ofthe sequence of images to be centered around image 1326 or the group,stack, or set of versions containing image 1326.

Using Rating Values with a Floating Controller

Floating controller 1310 may contain a ratings control 1350. A user mayconfigure ratings control 1350 to transmit user input that assigns arating value to each image displayed on floating controller 1310.Digital image system stores data that identifies the rating value of aparticular image when the user transmits user input to digital imagesystem that associates the rating value with the particular image. Therating value assigned to a particular image may be one of a sequence ofrating values. The user may assign the rating value based on differentcriteria, e.g., how well he or she liked or disliked a particular image.

A user may configure floating controller 1310 to display images ondisplay 1300 that meet or exceed a specified rating value. A user maysubmit user input to digital image system through ratings control 1350displayed on floating controller 1310 to cause images that are assigneda rating value at least as high as a specified ratings value in the userinput to be displayed on display 1300. In response, digital image systemselects a subset of images, based, at least in part, on the particularrating value, the sequence of the rating values, and the rating valuesassigned to each image of the plurality of images. The digital imagesystem may also select the subset of images whenever the user causes thefloating controller 1310 to be displayed.

After digital image system determines which images are assigned a ratingvalue that meets or exceeds the particular rating value, those imagesmay be displayed on display 1300. In another embodiment, a user may usefloating controller 1310 to only display on display 1300 those imagesthat are assigned a rating value that is exactly the same as thespecified rating value. In other embodiment, a user may use floatingcontroller 1310 to only display on display 1300 those images that areassigned a rating value that conforms to a set of criteria specified bythe user by configuring the ratings control 1350.

Ratings control 1350 allow a user to submit user input to digital imagesystem to cause the rating value currently assigned an image to bechanged. When the digital image system receives user input thatspecifies that the rating value assigned to an image is to be changed toa new value, the digital image system updated data that the digitalimage system stores that describes the rating value of that image toreflect the new value. If the rating value of a particular image ischanged, then the particular image may be removed from the set of imagesdisplayed on display 1300 if the new rating value does not meet thecriteria of those images currently displayed on display 1300.

In one embodiment of the invention, floating controller 1310 may beconfigured by the user to display one or more images in accordance witha particular set of ratings values whenever floating controller 1310 isinitially executed. For example, when floating controller 1310 isinitially executed by digital image system, floating controller 1310 maydisplay one or images that correspond to a specified set of ratingsvalues.

Searching for Images Using a Floating Controller

Floating controller 1310 also includes search controls 1360, which maybe configured by a user to submit user input to the digital image systemto cause the digital image system to search through a plurality ofimages to determine which of the plurality of images are associated withone or more search terms contained within the user input. Each imagestored by the digital image system may be associated with informationthat may be the subject of one or more search terms automatically. Forexample, information about each image that is available to digital imagesystem, such as the date of creation, the size of the image, theapplication the image was created by, may be automatically associated bythe digital image system to the image. Other information may beassociated with each image by the user by configuring search control1360 to submit user input to the digital image system to cause thedigital image system to associate the information, e.g., a title, adescription of the image, or the purpose of the image, with an image.

A user may submit user input to the digital image system by configuringsearch controls 1360 to determine which images in a plurality of imagescorrespond to a plurality of search terms contained within the userinput. Upon receiving the user input, the digital image systemdetermines which images correspond to the plurality of search terms.Thereafter, for each search term in the plurality of search terms thatcorresponds to at least one image in the plurality of images, thedigital image system displays, on display 1300, an image that indicatesa particular search term in the plurality of search terms thatcorresponds to at least one image in said plurality of images. Forexample, if a user want to search on two search terms, namely size andcreation date, and only the creation date search term resulted in amatch, then digital image system displays an image that is associatedwith the creation date search term.

A user may select any displayed image associated with a search term toview the search results associated with that search term. For example,if the user selected the creation date search term image displayed onthe display, then the digital image system presents those images thatmatched the creation date search term.

Displaying a Sequence of Images

Floating controller 1310 may display a bounded sequence of images. Thebounded sequence of images that are displayable on floating controller1310 may contain more images than can be displayed on floatingcontroller 1310 at the same time. Consequently, floating controller 1310may contain controls that allow a user to scroll through the imagesdisplayed on floating controller 1310.

The bounded sequence of images displayed on floating controller 1310 maybe visually depicted in a manner that indicates to the user whether thebounded sequence of images is at either the beginning or the end, orwhether additional images in the bounded sequence may be displayed byscrolling further in one direction or another. In one embodiment of theinvention, when an image in the bounded sequence is at either thebeginning or the end of the bounded sequences of images, that image maybe fully depicted without modification. On the other hand, when an imagein the bounded sequence is not at either the beginning or the end of thebounded sequences of images, that image may be depicted with amodification, e.g., the image may be shown partially shaded.

FIG. 14 is an illustration 1400 of a bounded sequence of imagesaccording to one embodiment of the invention. While images of thebounded sequence of images of FIG. 14 are displayed on floatingcontroller 1410, the sequences of image need not be displayed on afloating controller. Images 1420-1432 belong to a bounded sequence often images, wherein images 1420, 1422, 1424, 1426, 1428, 1430, and 1432are displayed (fully or partially) on floating controller 1410 of FIG.14, and wherein images 1434, 1436, and 1438 are not displayed onfloating controller 1410. Image 1420 is the start of the boundedsequence, and image 1438 is the end of the bounded sequence.

Digital image system may render images differently on a display in somecircumstances. When an image in the bounded sequence of images isdepicted is the first or last image displayed, and the image is ateither the beginning or the end of the bounded sequence of images, thenthe image may be fully depicted, without modification, to signal to theview that the image is at the beginning or end of the bounded sequenceof images. Image 1420 is fully depicted without modification, thusinforming the viewer that image 1420 is the beginning of the sequence ofbounded images. When an image in the bounded sequence of images isdepicted is the first or last image displayed, and the image is not ateither the beginning or the end of the bounded sequence of images, thenthe image may be depicted with a visual indicator to signal to the viewthat the image is not at the beginning or end of the bounded sequence ofimages. Image 1432 is depicted with visual indicator 1440 to inform theview that image 1432 is not the end of the sequence of bounded images.Visual indicator 1440 may be visually depicted in a variety of differentways, e.g., by shading a portion of the image, by including shadingadjacent to the image, by changing the color of the image, and inclusionof a label, icon, or image.

The visual indicator 1440 may be updated as a user scrolls through thebounded sequence of images. When a user scrolls through the boundedsequence of images, at least a portion of a first image is ceased to bedisplayed. Contemporaneously, a previously undisplayed portion of asecond image is displayed. A visual indication is then displayed thatindicates whether displaying the previously undisplayed portion fullydisplays a visual depiction that corresponds to an item at a particularposition within the bounded sequence. In one embodiment of theinvention, the particular position is the beginning or end of thebounded sequence of images. In other embodiment of the invention, theparticular position includes another position besides the beginning orend of the bounded sequences of images, such as the image that is in themiddle of the bounded sequence of images.

As the bounded sequence of images may be presented to the user in avariety of different ways, e.g., horizontal or vertical, the user mayscroll through the bounded sequence of images either horizontally orvertically, depending on how the bounded sequence of images aredisplayed.

Displaying Images on More than One Display

The digital image system of one embodiment of the invention may be usedto display images on more than one display. FIG. 15 is a block diagramof a digital image system 1500, according to one embodiment of theinvention, which may be used to display images on more than one display.Digital image system 1500 includes a computer system 1510, a primarydisplay device 1520, and secondary display devices 1530, 1532, and 1534.While only three secondary display devices are shown in FIG. 15, digitalimage system 1500 may comprises any number of secondary display devices,including one or more. Computer system 1510 may be implemented using anycomponent capable of causing a digital image to be displayed on theprimary display device 1520 and each secondary display device. Theprimary display device 1520 and each secondary display device 1530,1532, and 1534 may be implemented using any component that may displaydigital images, such as a CRT or a projector.

On a primary display device 1520 of a computer system 1510, the computersystem 1510 generating a display. If computer system 1510 is in a firstmode, then on secondary display device 1530, 1532, and 1534, computersystem 1510 generates the same display that is concurrently beingdisplayed on the primary display device 1520. On the other hand, ifcomputer system 1510 is in a second mode, then on secondary displaydevice 1530, 1532, and 1534, computer system 1510 generates a differentdisplay than the display that is concurrently being displayed on theprimary display device 1520.

The user may transmit user input to computer system 1510 to switchcomputer system 1510 between the first mode and the second mode. Theuser may submit user input to digital image system by a variety ofmechanisms, such as input device 2014 and cursor control 2016. The usermay wish to switch between the first mode and the second mode to assistthe presentation of material to viewers of the secondary display devices1530, 1532, and 1534.

In one embodiment of the invention, when the computer system is in thesecond mode, the display generated on the primary display deviceincludes a graphical user interface object, such as a floating toolbar,that is not displayed on the one or more secondary display devices 1530,1532, and 1534. The graphical user interface object has controls forselecting what is shown on said one or more secondary display devices.

Scrolling Through Images in a Grid

The digital image system of one embodiment of the invention may be usedto automatically advance one or more rows or columns in a grid whenscrolling through digital images of a sequence of images that arearranged in a set of rows or columns. FIG. 16 is an illustration of adisplay 1600 that shows a sequence of digital images arranged in aseries of rows according to one embodiment of the invention. Display1600 is sized such that only two rows may be visually presented ondisplay 1600 at a time. Accordingly, only images in row 2 and row 3 areshown on display 1600. Row 1 and row 4 are currently not displayed ondisplay 1600.

A user may scroll through the sequence of digital images eitherhorizontally (moving from column to column) or vertically (moving fromrow to row). In the display 1600 of FIG. 16, the user scrolls throughthe sequence of images vertically (row to row), since each images ineach column may be displayed on display 1600, but not all the rows ofimages in the sequence of images may be displayed at once on display1600. The techniques described below are applicable when a user scrollsthrough the grid of images either horizontally or vertically. Thus, theapproach below shall be discussed in terms of a line of images, which isa set of images either vertically or horizontally aligned on a display.For example, row 1, row 2, row 3, column 1, column 2, and column 3 areeach a line of images.

In one embodiment of the invention, a displayed set of images from asequence of images is displayed on a display view to a user. Forexample, row 2 and row 3 are displayed on display 1600, and images inrow 2 and row 3 of part of a sequence of images, namely images1602-1640. The sequence of images includes one or more undisplayedimages that are not displayed, e.g., images in row 1 and row 4.

The user may submit user input to digital image system via input device2014 and/or cursor control 2016 that selects a particular image from theset of displayed images (images in row 2 and row 3). For example, userinput could be received by the digital image system that selects image1614, wherein image 1624 was previously selected.

In response to receiving user input that selects a newly selected image,digital image system determines if the number of lines, in the displayedset of images, that precede the line containing the newly selected imageis less than a first predetermined threshold. The first predeterminedthreshold is a configurable number of lines that are to be displayed, ifavailable, before the line containing the newly selected image. Thedigital image system maintains data that identifies the firstpredetermined threshold. The user may submit user input to the digitalimage system to cause the first predetermined threshold to be updated toreflect a new number of lines.

If the digital image system determines that the number of lines, in thedisplayed set of images, that precede the line containing the newlyselected image are less than a first predetermined threshold, then thedigital image system causes a line of undisplayed images that precedethe displayed set of images to be displayed, and ceases to display aline of displayed images that follow the newly selected image. In thisexample, if user input is received that selects image 1614, and if thepredetermined threshold indicates that one line of images is to bedisplayed, if available, before the line containing the selected image(in this example, row 2), then digital image system causes an additionalline of images that precede the line containing the selected image 1614to be displayed, e.g., the digital image system will display row 1 ondisplay 1600, and cease to display row 3 on display 1600.

Additionally, in response to receiving user input that selects a newlyselected image, digital image system determines if the number of lines,in the displayed set of images, that follow the line containing thenewly selected image is less than a second predetermined threshold. Thesecond predetermined threshold is a configure number of lines that areto be displayed, if available, after the line containing the newlyselected image. The digital image system maintains data that identifiesthe second predetermined threshold. The user may submit user input tothe digital image system to cause the second predetermined threshold tobe updated to reflect a new number of lines.

If the digital image system determines that the number of lines, in thedisplayed set of images, that follow the line containing the newlyselected image is less than the second predetermined threshold, then thedigital image system causes a line of undisplayed images that follow thedisplayed set of images to be displayed, and ceases to display a line ofdisplayed images that precede the newly selected image. For example, ifuser input is received that selects image 1624, and if the secondpredetermined threshold indicates that at least one line of images is tobe displayed, if available, after the line containing the newly selectedimage, then an additional line of images that follow the selected image1624 may be displayed (row 4), and one line of images may be ceased tobe displayed (row 1).

The newly selected image need not be in the line that is next to a newlyadded line. For example, if the newly selected image is image 1614, andif the first predetermined threshold is three lines, then if three linesare not displayed before the newly selected image, then three lines maybe added to the display by digital image system.

In one embodiment of the invention, after a line of images has beenadded to the displayed set of images, all lines of displayed images,other than the line that ceases to be displayed, are shifted to makeroom for the newly displayed line. For example, if a line of images isadded to the displayed set of images (row 4), and row 2 ceases to bedisplayed, then row 3 may be shifted to accommodate the addition of row4.

In one embodiment of the invention, the first predetermined thresholdand the second predetermined threshold may be expressed in terms of anumber of images in a line, rather than a number of lines. For example,in this embodiment, in response to receiving user input that selects anewly selected image, digital image system determines (a) if the numberof images, in the displayed set of images, that precede the newlyselected image is less than the first predetermined threshold, and (b)if the number of images, in the displayed set of images, that follow thenewly selected image is less than the second predetermined threshold.

Unpiling and Repiling a Pile of Images

The digital image system of one embodiment of the invention may be usedto view each of a set of digital images unobscured when one or more ofthe set of digital images is displayed on a display in an obscuredmanner. For example, a digital image shown on a display may be obscuredif a portion of the digital image is behind another digital image. FIG.17 is a flow chart illustrating the steps of viewing each of a set ofdigital images in an unobscured manner according to one embodiment ofthe invention. In step 1710, a pile of images is displayed on a display.The pile of images includes a plurality of images arranged in a firstarrangement in which at least one image in the pile overlaps with atleast one other image in the pile. The digital image system may performstep 1710 by displaying the pile of images on a display. The pile ofimages displayed in step 1710 may be generated from images stored by thedigital image system.

FIG. 18 is an illustration of a first display 1800 showing a set ofimages wherein at least one of the set of images is at least partiallyobscured according to one embodiment of the invention. The display 1800of FIG. 18 may result after the performance of step 1710. While mostimages in the pile of images displayed on display 1800 overlap anotherimage, any number of images in the pile of images displayed in step 1710may be partially obscured or may overlap another image. After theperformance of step 1710, processing proceeds to step 1720.

In step 1720, location data that indicates the location of each image inthe first arrangement is stored. The location data may be stored by thedigital image system. After the performance of step 1720, processingproceeds to step 1730.

In step 1730, in response to receiving a first set of user input whilethe images of the pile are displayed in the first arrangement of step1710, without changing the location data, the images that belong to thepile of images are displayed by the digital image system on a display ina second arrangement. The second arrangement displays each image in theset of images without overlapping the image with another image in theset of images.

FIG. 19 is an illustration of a second display 1900 showing the set ofimages of FIG. 18 in an unobscured manner that may result after theperformance of step 1730. The second arrangement may be determined usingvarious algorithms to determine where to move each image so that eachimage in the set of images does not obscure or overlap another image inthe set of images, e.g., the amount of movement experienced by eachimage may be minimized. The user may move any image in the secondarrangement (e.g., by dragging and dropping it); however, moving animage causes the location data to be updated to reflect the new locationof the image. After the performance of step 1730, processing proceeds tostep 1740.

In step 1740, in response to receiving a second set of user input whilethe images of the pile are displayed in the second arrangement, the pileof images are displayed on a display by the digital image system in thefirst arrangement based on the location data. As a result of performingstep 1740, the pile of images will be visually depicted on a display asshown in FIG. 18.

Such an embodiment advantageously allows a user to view each image in apile without moving any image in the pile. Consequently, a user maymanage a set of displayed images with greater confidence as the user mayvisually ascertain the nature of each image, even if the display of theimage is momentarily obscured by other images.

Implementation Mechanisms

The digital image system of an embodiment may be implemented using acomputer system. FIG. 20 is a block diagram that illustrates a computersystem 2000 upon which an embodiment of the invention may beimplemented. As explained in further detail below, a user may usecomputer system 2000 to view digital images on display 2012, storedigital images in storage device 2010, and interact with display 2012with either input device 2014 or cursor control 2016. Computer system2000 includes a bus 2002 or other communication mechanism forcommunicating information, and a processor 2004 coupled with bus 2002for processing information. Computer system 2000 also includes a mainmemory 2006, such as a random access memory (RAM) or other dynamicstorage device, coupled to bus 2002 for storing information andinstructions to be executed by processor 2004. Main memory 2006 also maybe used for storing temporary variables or other intermediateinformation during execution of instructions to be executed by processor2004. Computer system 2000 further includes a read only memory (ROM)2008 or other static storage device coupled to bus 2002 for storingstatic information and instructions for processor 2004. A storage device2010, such as a magnetic disk or optical disk, is provided and coupledto bus 2002 for storing information and instructions.

Computer system 2000 may be coupled via bus 2002 to a display 2012, suchas a cathode ray tube (CRT), computer monitor, web page, or anygraphical interface, for displaying information to a computer user. Aninput device 2014, including alphanumeric and other keys, is coupled tobus 2002 for communicating information and command selections toprocessor 2004. Another type of user input device is cursor control2016, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor2004 and for controlling cursor movement on display 2012. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

The invention is related to the use of computer system 2000 forimplementing the techniques described herein. According to oneembodiment of the invention, those techniques are performed by computersystem 2000 in response to processor 2004 executing one or moresequences of one or more instructions contained in main memory 2006.Such instructions may be read into main memory 2006 from anothermachine-readable medium, such as storage device 2010. Execution of thesequences of instructions contained in main memory 2006 causes processor2004 to perform the process steps described herein. In alternativeembodiments, hard-wired circuitry may be used in place of or incombination with software instructions to implement the invention. Thus,embodiments of the invention are not limited to any specific combinationof hardware circuitry and software.

The term “machine-readable medium” as used herein refers to any mediumthat participates in providing data that causes a machine to operationin a specific fashion. In an embodiment implemented using computersystem 2000, various machine-readable media are involved, for example,in providing instructions to processor 2004 for execution. Such a mediummay take many forms, including but not limited to, non-volatile media,volatile media, and transmission media. Non-volatile media includes, forexample, optical or magnetic disks, such as storage device 2010.Volatile media includes dynamic memory, such as main memory 2006.Transmission media includes coaxial cables, copper wire and fiberoptics, including the wires that comprise bus 2002. Transmission mediacan also take the form of acoustic or light waves, such as thosegenerated during radio-wave and infra-red data communications.

Common forms of machine-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punchcards, papertape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of machine-readable media may be involved in carrying oneor more sequences of one or more instructions to processor 2004 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 2000 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 2002. Bus 2002 carries the data tomain memory 2006, from which processor 2004 retrieves and executes theinstructions. The instructions received by main memory 2006 mayoptionally be stored on storage device 2010 either before or afterexecution by processor 2004.

Computer system 2000 also includes a communication interface 2018coupled to bus 2002. Communication interface 2018 provides a two-waydata communication coupling to a network link 2020 that is connected toa local network 2022. For example, communication interface 2018 may bean integrated services digital network (ISDN) card or a modem to providea data communication connection to a corresponding type of telephoneline. As another example, communication interface 2018 may be a localarea network (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 2018 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 2020 typically provides data communication through one ormore networks to other data devices. For example, network link 2020 mayprovide a connection through local network 2022 to a host computer 2024or to data equipment operated by an Internet Service Provider (ISP)2026. ISP 2026 in turn provides data communication services through theworld wide packet data communication network now commonly referred to asthe “Internet” 2028. Local network 2022 and Internet 2028 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 2020 and through communication interface 2018, which carrythe digital data to and from computer system 2000, are exemplary formsof carrier waves transporting the information.

Computer system 2000 can send messages and receive data, includingprogram code, through the network(s), network link 2020 andcommunication interface 2018. In the Internet example, a server 2030might transmit a requested code for an application program throughInternet 2028, ISP 2026, local network 2022 and communication interface2018.

The received code may be executed by processor 2004 as it is received,and/or stored in storage device 2010, or other non-volatile storage forlater execution. In this manner, computer system 2000 may obtainapplication code in the form of a carrier wave.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. Thus, the sole and exclusive indicatorof what is the invention, and is intended by the applicants to be theinvention, is the set of claims that issue from this application, in thespecific form in which such claims issue, including any subsequentcorrection. Any definitions expressly set forth herein for termscontained in such claims shall govern the meaning of such terms as usedin the claims. Hence, no limitation, element, property, feature,advantage or attribute that is not expressly recited in a claim shouldlimit the scope of such claim in any way. The specification and drawingsare, accordingly, to be regarded in an illustrative rather than arestrictive sense.

1. A method for displaying a sequence of items, the method comprising:displaying on a floating controller, which occupies a first portion of adisplay, a plurality of items from a sequence of items; determining thata first item and a second item from the plurality of items have a firstassociation; and displaying a first visual indicator on the floatingcontroller to indicate that the first item and the second item areassociated with each other; wherein the method is performed by one ormore computing devices.
 2. The method of claim 1 wherein the firstvisual indicator is displayed between the first item and the seconditem.
 3. The method of claim 1, wherein the first item and the seconditem are part of a group, a stack, or a version set, and wherein adifferent visual indicator is used for a group, a stack, and a versionset to visually indicate which particular type of association existsbetween the first item and the second item.
 4. The method of claim 1,further comprising: determining that a third item and a fourth item fromthe plurality of items have a second association; and displaying asecond visual indicator on the floating controller to indicate that thethird item and the fourth item are associated with each other.
 5. Themethod of claim 4, wherein the second item does not have an associationwith the third item, and wherein no visual indicator is displayedbetween the second item and the third item, thereby indicating that thesecond item and the third item are not associated with each other. 6.The method of claim 1, further comprising: displaying, in a secondportion of the display, a first enlarged image that corresponds to oneof the items in the plurality of items displayed on the floatingcontroller; displaying, in the second portion of the display, a secondenlarged image that corresponds to another of the items in the pluralityof items displayed on the floating controller; receiving user inputselecting yet another item of the items in the plurality of itemsdisplayed on the floating controller; and in response to receiving theuser input, ceasing to display the second enlarged image, anddisplaying, in place of the second enlarged image, a third enlargedimage that corresponds to the yet another item while continuing todisplay the first enlarged image.
 7. The method of claim 6, wherein thefirst enlarged image is a representative image of a group, stack, orversion set, and the third enlarged image belongs to the same group,stack, or version set as the first enlarged image.
 8. The method ofclaim 6, wherein the first enlarged image and the second enlarged imageare displayed side-by-side, and wherein the method further comprising:receiving further user input to move the floating controller; and inresponse to the further user input, causing the floating controller tobe dragged from a first position to a second position on the display;wherein the first enlarged image and the second enlarged image do notmove in response to the floating controller being moved.
 9. The methodof claim 1, wherein the plurality of items displayed on the floatingcontroller comprises a first set of associated items and a second set ofassociated items, and wherein the method further comprising: receivinguser input selecting an item from the first set of associated items,wherein the first set of items belongs to a first group, stack, orversion set and the second set of associated items belongs to a secondand different group, stack, or version set; and in response to the userinput, centering display of the sequence of items on the floatingcontroller on the first group, stack, or version set.
 10. Acomputer-readable storage storing one or more instructions which, whenexecuted by one or more processors, cause one or more computing devicesto perform the operations of: displaying on a floating controller, whichoccupies a first portion of a display, a plurality of items from asequence of items; determining that a first item and a second item fromthe plurality of items have a first association; and displaying a firstvisual indicator on the floating controller to indicate that the firstimage and the second image are associated with each other.
 11. Thecomputer-readable storage of claim 10, wherein the first visualindicator is displayed between the first item and the second item. 12.The computer-readable storage of claim 10, wherein the first item andthe second item are part of a group, a stack, or a version set, andwherein a different visual indicator is used for a group, a stack, and aversion set to visually indicate which particular type of associationexists between the first item and the second item.
 13. Thecomputer-readable storage of claim 10, wherein the one or moreinstructions further cause the one or more computing devices to performthe operations of: determining that a third item and a fourth item fromthe plurality of items have a second association; and displaying asecond visual indicator on the floating controller to indicate that thethird item and the fourth item are associated with each other.
 14. Thecomputer-readable storage of claim 13, wherein the second item does nothave an association with the third item, and wherein no visual indicatoris displayed between the second item and the third item, therebyindicating that the second item and the third item are not associatedwith each other.
 15. The computer-readable storage of claim 10, whereinthe one or more instructions further cause the one or more computingdevices to perform the operations of: displaying, in a second portion ofthe display, a first enlarged image that corresponds to one of the itemsin the plurality of items displayed on the floating controller;displaying, in the second portion of the display, a second enlargedimage that corresponds to another of the items in the plurality of itemsdisplayed on the floating controller; receiving user input selecting yetanother item of the items in the plurality of items displayed on thefloating controller; and in response to receiving the user input,ceasing to display the second enlarged image, and displaying, in placeof the second enlarged image, a third enlarged image that corresponds tothe yet another item while continuing to display the first enlargedimage.
 16. The computer-readable storage of claim 15, wherein the firstenlarged image is a representative image of a group, stack, or versionset, and the third enlarged image belongs to the same group, stack, orversion set as the first enlarged image.
 17. The computer-readablestorage of claim 15 wherein the one or more instructions further causethe one or more computing devices to perform the operations of:receiving further user input to move the floating controller; and inresponse to the further user input, causing the floating controller tobe dragged from a first position to a second position on the display;wherein the first enlarged image and the second enlarged image do notmove in response to the floating controller being moved.
 18. Thecomputer-readable storage of claim 10 wherein the plurality of itemsdisplayed on the floating controller comprises a first set of associateditems and a second set of associated items, and wherein the one or moreinstructions further cause the one or more computing devices to performthe operations of: receiving user input selecting an item from the firstset of associated items, wherein the first set of items belongs to afirst group, stack, or version set and the second set of associateditems belongs to a second and different group, stack, or version set;and in response to the user input, centering display of the sequence ofitems on the floating controller on the first group, stack, or versionset.
 19. A system comprising: one or more processors; and a storagestoring instructions which, when executed by the one or more processors,cause the system to perform the operations of: displaying on a floatingcontroller, which occupies a first portion of a display, a plurality ofitems from a sequence of items; determining that a first item and asecond item from the plurality of items have a first association; anddisplaying a first visual indicator on the floating controller toindicate that the first item and the second item are associated witheach other.
 20. The system of claim 19, wherein the first visualindicator is displayed between the first item and the second item.